<!DOCTYPE html>
<html lang="zh">
    <head>
  <!-- 元数据 -->
  <meta charset="utf-8">
  
  
  <title>虚拟内存（操作系统笔记7） | 舛羽的笔记小站</title>
  <meta name="author" content="cy" />
  <meta http-equiv="Cache-Control" content="no-transform" />
  <meta http-equiv="Cache-Control" content="no-siteapp" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="robots" content="index,follow" />
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
  <meta name="format-detection" content="telphone=no, email=no" />
  
    <meta name="keywords" content="操作系统" />
  
  <meta name="description" content="本章会介绍虚拟内存技术是如何做到内存的扩充的，这一章只是相对来说较为抽象，但是虚拟内存已经广泛的运用于各种操作系统。">
<meta property="og:type" content="article">
<meta property="og:title" content="虚拟内存（操作系统笔记7）">
<meta property="og:url" content="http://example.com/2023/01/20/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0-7/index.html">
<meta property="og:site_name" content="舛羽的笔记小站">
<meta property="og:description" content="本章会介绍虚拟内存技术是如何做到内存的扩充的，这一章只是相对来说较为抽象，但是虚拟内存已经广泛的运用于各种操作系统。">
<meta property="og:locale">
<meta property="og:image" content="https://s2.loli.net/2023/01/20/1pvyg5a3oqrmfRd.png">
<meta property="og:image" content="https://s2.loli.net/2023/01/20/iVtCgM2ILsFf8YH.png">
<meta property="og:image" content="https://s2.loli.net/2023/01/20/CUHIuLVRaoAGSKN.png">
<meta property="og:image" content="https://s2.loli.net/2023/01/20/iWfJ9GlkIEsOXaK.png">
<meta property="og:image" content="https://s2.loli.net/2023/01/20/gDpI3798ojlKzvE.png">
<meta property="og:image" content="https://s2.loli.net/2023/01/21/4bvZliRsoYLNrXy.png">
<meta property="og:image" content="https://s2.loli.net/2023/01/21/9wZGDbPkpAfEOJy.png">
<meta property="og:image" content="https://s2.loli.net/2023/01/21/Mrf7axkRTzYPeqF.png">
<meta property="og:image" content="https://s2.loli.net/2023/01/21/cS4GFByp7J51qix.png">
<meta property="article:published_time" content="2023-01-20T06:20:47.000Z">
<meta property="article:modified_time" content="2023-01-29T13:16:51.834Z">
<meta property="article:author" content="cy">
<meta property="article:tag" content="操作系统">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://s2.loli.net/2023/01/20/1pvyg5a3oqrmfRd.png">
  
  <!-- 站点验证相关 -->
  
    
    
    
  
  <!-- 样式表文件 -->
  <link rel="stylesheet" id="kratos-css" href="/css/kratosr.min.css" media="all"></script>
  
    <link rel="stylesheet" id="darkmode-css" href="/css/kr-color-dark.min.css" media="(prefers-color-scheme: dark)"></script>
    <script src="/js/kr-dark.min.js"></script>
  
  
    <link rel="stylesheet" id="highlight-css" href="/css/highlight/night-eighties.min.css" media="all"></script>
  
  
  <link rel="stylesheet" id="fontawe-css" href="/vendors/font-awesome@4.7.0/css/font-awesome.min.css" media="all"></script>
  <link rel="stylesheet" id="nprogress-css" href="/vendors/nprogress@0.2.0/nprogress.css" media="all"></script>
  
  
  
    <link rel="stylesheet" href="/vendors/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css"></script>
  
  <!-- 不得不预先加载的一些JS文件 -->
  <script src="/vendors/jquery@3.6.0/dist/jquery.min.js"></script>
  
    <script src="/vendors/qrcode_js@1.0.0/qrcode.min.js"></script>
  
  
  <style>
    
      .kratos-cover.kratos-cover-2 {
        background-image: url('/images/banner.webp');
      }
    
    
      @media(min-width:768px) {
        body.custom-background {
          background-image: url('/images/bg.webp');
        }
      }
    
  </style>
  
<meta name="generator" content="Hexo 7.3.0"></head>


    <body class="custom-background">
        <div id="kratos-wrapper">
    <div id="kratos-page">
        <div id="kratos-header">
            <header id="kratos-desktop-topnav" class="kratos-topnav">
                <div class="container">
                    <div class="nav-header">
                        <nav id="kratos-menu-wrap">
                            <ul id="kratos-primary-menu" class="sf-menu">
                                
                                    
                                    
                                
                            </ul>
                        </nav>
                    </div>
                </div>
            </header>
            <header id="kratos-mobile-topnav" class="kratos-topnav">
                <div class="container">
                    <div class="color-logo"><a href="/">舛羽的笔记小站</a></div>
                    <div class="nav-toggle">
                        <a class="kratos-nav-toggle js-kratos-nav-toggle">
                            <i></i>
                        </a>
                    </div>
                </div>
            </header>
        </div>
        <div class="kratos-start kratos-hero-2">
            <!-- <div class="kratos-overlay"></div> -->
            <div class="kratos-cover kratos-cover-2 text-center">
                <div class="desc desc2 animate-box">
                    <a href="/">
                        <h2>舛羽的笔记小站</h2> <br />
                        <span></span>
                    </a>
                </div>
            </div>
        </div>

        <div id="kratos-blog-post">
            <div class="container">
                <div id="main" class="row">
                    

        

            <section class="col-md-8">

        

            <article itemscope itemtype="https://schema.org/Article">
    
    <link itemprop="mainEntityOfPage" href="http://example.com/2023/01/20/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0-7/">
    <div class="kratos-hentry kratos-post-inner clearfix">
        <header class="kratos-entry-header">
            
                <h1 class="kratos-entry-title text-center" itemprop="name headline">虚拟内存（操作系统笔记7）</h1>
            
            
            <ul class="kratos-post-meta text-center">
                <li><time datetime="2023-01-20T06:20:47.000Z" itemprop="datePublished"><i class="fa fa-calendar"></i> 2023-01-20</time></li>
                <li itemprop="author" itemscope itemtype="https://schema.org/Person">
                    <i class="fa fa-user"></i> 作者 <span itemprop="name">cy</span>
                </li>
                <li>
                    <i class="fa fa-edit"></i> 
                    
                    
                        ~2.32K
                    
                    字
                </li>
                
            </ul>
        </header>
        <div class="kratos-post-content">
            
            <div id="expire-alert" class="alert alert-warning hidden" role="alert">
                <div class="icon"><i class="fa fa-warning"></i></div>
                <div class="text"><p>本文最后编辑于 <time datetime="1674998211834"></time> 前，其中的内容可能需要更新。</p></div>
            </div>
            
            
            
            <hr />
            <div itemprop="articleBody"><p>本章会介绍虚拟内存技术是如何做到内存的扩充的，这一章只是相对来说较为抽象，但是虚拟内存已经广泛的运用于各种操作系统。</p>
<span id="more"></span>
<h2 id="第七章-虚拟内存"><a href="#第七章-虚拟内存" class="headerlink" title="第七章 虚拟内存"></a>第七章 虚拟内存</h2><p>在上一章内存管理中我们稍微介绍了内存扩充技术，包括对换与覆盖进行扩充，而这一章我们将介绍内存扩充最重要的技术，那就是虚拟内存技术，学会了这章你就能明白为什么你的电脑内存只有16G，却能运行30G的游戏了。</p>
<h3 id="7-1-传统存储管理方式的特征"><a href="#7-1-传统存储管理方式的特征" class="headerlink" title="7.1 传统存储管理方式的特征"></a>7.1 传统存储管理方式的特征</h3><p>传统的存储管理方式有如下两点特征：</p>
<ul>
<li><p>一次性：作业必须一次性全部装入内存后才能开始运行。</p>
<p>缺点：</p>
<ol>
<li>作业很大时，不能全部装入内存，导致大作业无法运行</li>
<li>当大量作业要求运行时，由于内存无法容纳所有作业，因此只有少量作业能运行，导致多道程序并发度降低</li>
</ol>
</li>
<li><p>驻留性：一旦作业被装入内存，就会一直驻留在内存中，直至作业运行结束。</p>
<p>缺点：</p>
<ol>
<li>内存中会驻留大量的、暂时用不到的数据，浪费宝贵的内存资源</li>
</ol>
</li>
</ul>
<p>在结合我们之前介绍的局部性原理，传统存储管理方式已经很难满足这些需求了，也无法应用局部性原理优化，于是衍生出了内存扩充技术。</p>
<h3 id="7-2-虚拟内存的定义与特征"><a href="#7-2-虚拟内存的定义与特征" class="headerlink" title="7.2 虚拟内存的定义与特征"></a>7.2 虚拟内存的定义与特征</h3><p><img src="https://s2.loli.net/2023/01/20/1pvyg5a3oqrmfRd.png" alt=""></p>
<p>虚拟内存主要有以下三个特征：</p>
<ul>
<li>多次性：无需再作业云高兴是一次性全部装入内存，而是允许多次调入内存。</li>
<li>对换性：再作业运行时无需一直常驻内存，而是允许作业在运行过程中，将作业换出、换入。</li>
<li>虚拟性：从逻辑上扩充了内存的容量，时用户看到的内存容量，远大于实际的容量。</li>
</ul>
<p>实现虚拟内存技术主要有以下三种方式：</p>
<ul>
<li>请求分页存储管理</li>
<li>请求分段存储管理</li>
<li>请求段页式存储管理</li>
</ul>
<p>虽然形式有所不同，但是他们都要实现以下两点：</p>
<ol>
<li>访问的信息不在内存时，由操作系统负责将所需信息从外存调入内存（请求调页功能）</li>
<li>内存空间不够时，将内存中赞时用不到的信息换出到外存（页面置换功能）</li>
</ol>
<h3 id="7-3-请求分页管理方式"><a href="#7-3-请求分页管理方式" class="headerlink" title="7.3 请求分页管理方式"></a>7.3 请求分页管理方式</h3><h4 id="1-请求分页存储管理与基本分页存储管理的区别"><a href="#1-请求分页存储管理与基本分页存储管理的区别" class="headerlink" title="(1)请求分页存储管理与基本分页存储管理的区别"></a>(1)请求分页存储管理与基本分页存储管理的区别</h4><p><strong>请求分页存储管理</strong>与<strong>基本分页存储管理</strong>的<font color='red'>主要区别</font>：</p>
<p>在程序执行过程中，当所访问的信息不在内存时，由操作系统将所需信息从外存调入内存，然后继续执行程序。</p>
<p>若内存空间不够，由操作系统负责将内存中暂时用不到的信息换出到外存。</p>
<p>请求分页存储管理的<font color='red'>页表</font>与基本分页存储管理的<font color='red'>页表</font>的<font color='red'>主要区别</font>：</p>
<p><img src="https://s2.loli.net/2023/01/20/iVtCgM2ILsFf8YH.png" alt=""></p>
<h4 id="2-缺页中断机构"><a href="#2-缺页中断机构" class="headerlink" title="(2)缺页中断机构"></a>(2)缺页中断机构</h4><ol>
<li>找到页表项后检查页面是否已在内存，若没在内存，产生缺页中断</li>
<li>缺页中断处理中，需要将目标页面调入内存，有必要时还要换出页面</li>
<li>缺页中断属于内中断，属于内中断中的“故障”，即可能被系统修复的异常</li>
<li>一条指令在执行过程中可能产生多次缺页中断</li>
</ol>
<p><img src="https://s2.loli.net/2023/01/20/CUHIuLVRaoAGSKN.png" alt=""></p>
<h4 id="3-地址变换机构"><a href="#3-地址变换机构" class="headerlink" title="(3)地址变换机构"></a>(3)地址变换机构</h4><p><img src="https://s2.loli.net/2023/01/20/iWfJ9GlkIEsOXaK.png" alt=""></p>
<h3 id="7-4-页面置换算法"><a href="#7-4-页面置换算法" class="headerlink" title="7.4 页面置换算法"></a>7.4 页面置换算法</h3><h4 id="1-最佳置换算法"><a href="#1-最佳置换算法" class="headerlink" title="(1)最佳置换算法"></a>(1)最佳置换算法</h4><p>规则：优先淘汰最长时间内不会被访问的页面。</p>
<p>优点：保证<font color='red'>最低的缺页率</font></p>
<p>缺点：操作系统只有个在进程执行的过程中才知道接下来会访问到那个页面。因此最佳置换算法是<font color='red'>无法实现</font>的。</p>
<h4 id="2-先进先出置换算法（FIFO）"><a href="#2-先进先出置换算法（FIFO）" class="headerlink" title="(2)先进先出置换算法（FIFO）"></a>(2)先进先出置换算法（FIFO）</h4><p>规则：每次选择淘汰的页面是最早进入内存的页面</p>
<p>实现方法：把调入内存的页面根据调入的先后顺序排成一个队列，需要换出页面时选择对头页面即可。队列的最大长度取决于系统未进程分配了多少个内存块。</p>
<p>优点：实现简单</p>
<p>缺点：</p>
<ol>
<li>该算法与进程实际运行时的规律不适应，算法性能差。</li>
<li>会产生Belady异常：党委进程分配的物理块数增大时，缺页次数不减反增的异常现象（只有FIFO算法会产生）</li>
</ol>
<h4 id="3-最近最久未使用置换算法（LRU）"><a href="#3-最近最久未使用置换算法（LRU）" class="headerlink" title="(3)最近最久未使用置换算法（LRU）"></a>(3)最近最久未使用置换算法（LRU）</h4><p>规则：每次淘汰的页面时最近最久未使用的页面</p>
<p>实现方法：赋予每个页面对应的页表项中，用访问字段记录该页面自上次被访问依赖所经历的时间t。当需要淘汰一个页面时，选择现有页面中t值最大的，即最近最久未使用页面。</p>
<p>优点：性能号</p>
<p>缺点：需要专门的硬件支持，实现困难，开销大</p>
<h4 id="4-时钟置换算法（CLOCK）"><a href="#4-时钟置换算法（CLOCK）" class="headerlink" title="(4)时钟置换算法（CLOCK）"></a>(4)时钟置换算法（CLOCK）</h4><p>规则：将最近未使用的算法进行置换，所以也称为最近未用算法</p>
<p>实现方法：为每个页面是指一个访问位，再将内存中的页面都通过链接指针链接成一个循化队列。当某页被访问时，其访问位置位为1，当需要淘汰一个页面时，只需检查页的访问位，如果是0，就选择换出；如果是1，则将它置为0，暂不换出，继续检查下一个页面，若第一轮扫描中所有页面都是1，则将这些页面的访问位一次置为0后，进行第二轮扫描。（最多会经过两轮扫描）</p>
<p>优点：实现简单，算法开销小</p>
<p>缺点：未考虑页面被修改导致的I/O</p>
<h4 id="5-改造型时钟置换算法"><a href="#5-改造型时钟置换算法" class="headerlink" title="(5)改造型时钟置换算法"></a>(5)改造型时钟置换算法</h4><p><img src="https://s2.loli.net/2023/01/20/gDpI3798ojlKzvE.png" alt=""></p>
<p>算法开销小，且性能也不错，就是理解起来有点麻烦。</p>
<h3 id="7-5-页面分配策略"><a href="#7-5-页面分配策略" class="headerlink" title="7.5 页面分配策略"></a>7.5 页面分配策略</h3><h4 id="1-驻留集"><a href="#1-驻留集" class="headerlink" title="(1)驻留集"></a>(1)驻留集</h4><p>请求分页存储管理中各进程分配的物理块的集合被称为驻留集。</p>
<p>在采用了虚拟存储技术的系统中，驻留集大小一般小于进程的总大小。</p>
<p>若驻留集太小，会导致缺页平凡，系统要花大量的时间来处理缺页，实际用于进程推进的时间很小；</p>
<p>驻留集太大，又会导致多道陈旭并发度下降，资源利用率降低。所以应该选择一个合适的驻留集大小。</p>
<p>那么怎样分配驻留集就是我们这章需要讨论的问题。</p>
<h4 id="2-页面分配置换策略"><a href="#2-页面分配置换策略" class="headerlink" title="(2)页面分配置换策略"></a>(2)页面分配置换策略</h4><p>固定分配：</p>
<p>操作系统为每个进程分配一组固定数目的物理块，在进程运行期间不再改变。即，驻留集大小不变。</p>
<p>可变分配：</p>
<p>先为每个进程分配一定数目的物理块，在进程运行期间，可根据情况做适当的增加或减少。即驻留集大小可变</p>
<p>局部置换：发生缺页时只能选进程自己的物理块进行置换</p>
<p>全局置换：可以将操作系统保留的空闲物理块分配给缺页进程，也可以将别的进程持有的物理块置换到外存，在分配给缺页进程</p>
<p><img src="https://s2.loli.net/2023/01/21/4bvZliRsoYLNrXy.png" alt=""></p>
<h3 id="7-6-调入页面的时机"><a href="#7-6-调入页面的时机" class="headerlink" title="7.6 调入页面的时机"></a>7.6 调入页面的时机</h3><p><img src="https://s2.loli.net/2023/01/21/9wZGDbPkpAfEOJy.png" alt=""></p>
<h3 id="7-7-调页位置"><a href="#7-7-调页位置" class="headerlink" title="7.7 调页位置"></a>7.7 调页位置</h3><p><img src="https://s2.loli.net/2023/01/21/Mrf7axkRTzYPeqF.png" alt=""></p>
<h3 id="7-7-抖动现象"><a href="#7-7-抖动现象" class="headerlink" title="7.7 抖动现象"></a>7.7 抖动现象</h3><p>刚刚换出的页面马上又要换入内存，刚刚换入的页面马上又换出内存，这种频繁的页面调度行为称为抖动（颠簸）产生抖动的主要原因时进程频繁访问的页面数目高于可用的物理快数（分配给进程的物理块不够）</p>
<h3 id="7-8-工作集"><a href="#7-8-工作集" class="headerlink" title="7.8 工作集"></a>7.8 工作集</h3><p><img src="https://s2.loli.net/2023/01/21/cS4GFByp7J51qix.png" alt=""></p>
</div>
        </div>
        
            <div class="kratos-copyright text-center clearfix">
                <h5 itemprop="copyrightNotice">本作品采用 <a rel="license nofollow" target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/">知识共享署名-相同方式共享 4.0 国际许可协议</a> 进行许可</h5>
            </div>
        
        <footer class="kratos-entry-footer clearfix">
            
                <div class="post-like-donate text-center clearfix" id="post-like-donate">
                
                
                    <a class="share" href="javascript:;"><i class="fa fa-share-alt"></i> 分享</a>
                    <div class="share-wrap" style="display: none;">
    <div class="share-group">
        <a href="javascript:;" class="share-plain qq" onclick="share('qq');" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-qq"></i>
            </div>
        </a>
        <a href="javascript:;" class="share-plain qzone" onclick="share('qzone');" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-star"></i>
            </div>
        </a>
        <a href="javascript:;" class="share-plain weixin pop style-plain" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-weixin"></i>
            </div>
            <div class="share-int">
                <div class="qrcode" id="wechat-qr"></div>
                <p>打开微信“扫一扫”，打开网页后点击屏幕右上角分享按钮</p>
            </div>
        </a>
        <a href="javascript:;" class="share-plain weibo" onclick="share('weibo');" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-weibo"></i>
            </div>
        </a>
        <a href="javascript:;" class="share-plain facebook style-plain" onclick="share('facebook');" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-facebook"></i>
            </div>
        </a>
        <a href="javascript:;" class="share-plain twitter style-plain" onclick="share('twitter');" rel="nofollow">
            <div class="icon-wrap">
                <i class="fa fa-twitter"></i>
            </div>
        </a>
    </div>
    <script type="text/javascript">
        $(()=>{
            new QRCode("wechat-qr", {
                text: "http://example.com/2023/01/20/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0-7/",
                width: 150,
                height: 150,
                correctLevel : QRCode.CorrectLevel.H
            });
        });
        function share(dest) {
            const qqBase        = "https://connect.qq.com/widget/shareqq/index.html?";
            const weiboBase     = "https://service.weibo.com/share/share.php?";
            const qzoneBase     = "https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?";
            const facebookBase  = "https://www.facebook.com/sharer/sharer.php?";
            const twitterBase   = "https://twitter.com/intent/tweet?";
            const hostUrl       = "http://example.com/2023/01/20/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0-7/";
            const title         = "「虚拟内存（操作系统笔记7）」";
            const excerpt       = `本章会介绍虚拟内存技术是如何做到内存的扩充的，这一章只是相对来说较为抽象，但是虚拟内存已经广泛的运用于各种操作系统。`;
            let _URL;
            switch (dest) {
                case "qq"       : _URL = qqBase+"url="+hostUrl+"&title="+title+"&desc=&summary="+excerpt+"&site=cxpy";     break;
                case "weibo"    : _URL = weiboBase+"url="+hostUrl+"&title="+title+excerpt;                                 break;
                case "qzone"    : _URL = qzoneBase+"url="+hostUrl+"&title="+title+"&desc=&summary="+excerpt+"&site=cxpy";  break;
                case "facebook" : _URL = facebookBase+"u="+hostUrl;                                                        break;
                case "twitter"  : _URL = twitterBase+"text="+title+excerpt+"&url="+hostUrl;                                break;
            }
            window.open(_URL);
        };
    </script>
</div>
                
                </div>
            
            <div class="footer-tag clearfix">
                <div class="pull-left">
                <i class="fa fa-tags"></i>
                    <a class="tag-none-link" href="/tags/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/" rel="tag">操作系统</a>
                </div>
                <div class="pull-date">
                    <time datetime="2023-01-29T13:16:51.834Z" itemprop="dateModified">最后编辑：2023-01-29</time>
                </div>
            </div>
        </footer>
    </div>
    
        <nav class="navigation post-navigation clearfix" role="navigation">
            
            <div class="nav-previous clearfix">
                <a title=" 内存管理（操作系统笔记6）" href="/2023/01/12/操作系统笔记/操作系统笔记-6/">&lt; 上一篇</a>
            </div>
            
            
            <div class="nav-next clearfix">
                <a title=" 文件系统（操作系统笔记8）" href="/2023/01/22/操作系统笔记/操作系统笔记-8/">下一篇 &gt;</a>
            </div>
            
        </nav>
    
    
</article>

        

            </section>

        

                
            

<section id="kratos-widget-area" class="col-md-4 hidden-xs hidden-sm">
    <!-- 文章和页面根据splitter来分割，没有的话就从头开始设置为sticky -->
    
    
                <aside id="krw-about" class="widget widget-kratos-about clearfix">
    <div class="photo-background"></div>
    <div class="photo-wrapper clearfix">
        <div class="photo-wrapper-tip text-center">
            <img class="about-photo" src="/images/avatar.webp" loading="lazy" decoding="auto" />
        </div>
    </div>
    <div class="textwidget">
        <p class="text-center"></p>
    </div>
    <div class="site-meta">
        <a class="meta-item" href="/archives/">
            <span class="title">
                文章
            </span>
            <span class="count">
                39
            </span>
        </a>
        <a class="meta-item" href="/categories/">
            <span class="title">
                分类
            </span>
            <span class="count">
                7
            </span>
        </a>
        <a class="meta-item" href="/tags/">
            <span class="title">
                标签
            </span>
            <span class="count">
                10
            </span>
        </a>
    </div>
</aside>
            
                    <div class="sticky-area">
                
                
  <aside id="krw-categories" class="widget widget-kratos-categories clearfix">
    <h4 class="widget-title"><i class="fa fa-folder"></i>分类目录</h4>
      <ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/C-%E7%9F%A5%E8%AF%86/">C#知识</a><span class="category-list-count">9</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/Lua/">Lua</a><span class="category-list-count">10</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/Unity%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/">Unity网络游戏开发</a><span class="category-list-count">3</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B4/">宝可梦小说</a><span class="category-list-count">5</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0/">操作系统笔记</a><span class="category-list-count">10</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E7%AC%94%E8%AE%B0/">数据结构笔记</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E9%9A%8F%E6%83%B3/">随想</a><span class="category-list-count">1</span></li></ul>
  </aside>


            
                
  <aside id="krw-tags" class="widget widget-kratos-tags clearfix">
    <h4 class="widget-title"><i class="fa fa-tags"></i>标签聚合</h4>
      <div class="tag-clouds">
        <a href="/tags/C/" style="font-size: 0.75em;">C#</a> <a href="/tags/Lua/" style="font-size: 0.8em;">Lua</a> <a href="/tags/unity/" style="font-size: 0.65em;">unity</a> <a href="/tags/%E5%AE%9D%E5%8F%AF%E6%A2%A6/" style="font-size: 0.7em;">宝可梦</a> <a href="/tags/%E5%BD%B1%E8%AF%84/" style="font-size: 0.6em;">影评</a> <a href="/tags/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/" style="font-size: 0.8em;">操作系统</a> <a href="/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/" style="font-size: 0.6em;">数据结构</a> <a href="/tags/%E7%AE%97%E6%B3%95/" style="font-size: 0.6em;">算法</a> <a href="/tags/%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F/" style="font-size: 0.65em;">网络游戏</a> <a href="/tags/%E9%9A%8F%E6%83%B3/" style="font-size: 0.6em;">随想</a>
      </div>
  </aside>

            
                
  <aside id="krw-posts" class="widget widget-kratos-posts">
  <h4 class="widget-title"><i class="fa fa-file"></i>最新文章</h4>
  <div class="tab-content">
      <ul class="list-group">
        
        
          
          
            <a class="list-group-item" href="/2025/10/08/%E9%9A%8F%E6%83%B3/%E3%80%8A%E6%98%9F%E4%B8%89%E5%9B%BD%E3%80%8B%E5%90%90%E6%A7%BD/"><i class="fa  fa-book"></i> 《星三国》吐槽</a>
            
          
        
          
          
            <a class="list-group-item" href="/2023/08/14/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B4/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B45/"><i class="fa  fa-book"></i> 宝可梦小说第五章</a>
            
          
        
          
          
            <a class="list-group-item" href="/2023/08/13/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B4/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B44/"><i class="fa  fa-book"></i> 宝可梦小说第四章</a>
            
          
        
          
          
            <a class="list-group-item" href="/2023/08/10/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B4/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B43/"><i class="fa  fa-book"></i> 宝可梦小说第三章</a>
            
          
        
          
          
            <a class="list-group-item" href="/2023/08/09/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B4/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%B0%8F%E8%AF%B42/"><i class="fa  fa-book"></i> 宝可梦小说第二章</a>
            
          
        
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
          
            
      </ul>
  </div>
  </aside>

            
    </div>
</section>
        
        </div>
    </div>
</div>
<footer>
    <div id="footer"  >
        <div class="container">
            <div class="row">
                <div class="col-md-6 col-md-offset-3 footer-list text-center">
                    <ul class="kratos-social-icons">
                        
                        
                        
                        
                        
                        
                        
                        
                        
                    </ul>
                    <ul class="kratos-copyright">
                        <div>
                            <li>&copy; 2025 舛羽的笔记小站 版权所有.</li>
                            <li>本站已运行<span id="span_dt">Loading...</span></li>
                        </div>
                        <div>
                            <li>Theme <a href="https://github.com/Candinya/Kratos-Rebirth" target="_blank">Kratos:Rebirth</a></li>
                            <li>Site built with&nbsp;<i class="fa fa-heart throb" style="color:#d43f57"></i>&nbsp;by cy.</li>
                        </div>
                        <div>
                            <li>Powered by <a href="https://hexo.io" target="_blank" rel="nofollow">Hexo</a></li>
                            <li>Hosted on <a href="https://github.io" target="_blank">Github Pages</a></li>
                        </div>
                        <div>
                            
                            
                        </div>
                    </ul>
                </div>
            </div>
        </div>
        <div class="kr-tool text-center">
            <div class="tool">
                
                    <div class="box search-box">
                        <a href="/search/">
                            <span class="fa fa-search"></span>
                        </a>
                    </div>
                
                
                    <div class="box theme-box" id="darkmode-switch">
                        <span class="fa fa-adjust"></span>
                    </div>
                
                
            </div>
            <div class="box gotop-box">
                <span class="fa fa-chevron-up"></span>
            </div>
        </div>
    </div>
</footer>
</div>
</div>

        <script defer src="/vendors/bootstrap@3.3.4/dist/js/bootstrap.min.js"></script>
<script defer src="/vendors/nprogress@0.2.0/nprogress.js"></script>
<script>
    if (!window.kr) {
        window.kr = {};
    }
    window.kr.notMobile = (!(navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)));
    window.kr.siteRoot = "/";
</script>


    <script async src="/js/candy.min.js"></script>




    <script defer src="/vendors/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js"></script>

<script defer src="/vendors/clipboard@2.0.6/dist/clipboard.min.js"></script>
<script defer src="/js/kratosr.min.js"></script>
<script defer src="/js/pjax.min.js"></script>



<!-- Extra support for third-party plguins  -->


    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ["$","$"], ["\\(","\\)"] ],
            skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'],
            processEscapes: true
        }
    });
    MathJax.Hub.Queue(function() {
        var all = MathJax.Hub.getAllJax();
        for (var i = 0; i < all.length; ++i)
            all[i].SourceElement().parentNode.className += ' has-jax';
    });
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML
"></script>
</body>
</html>